home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_08 / saks / genq3.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-12  |  916 b   |  52 lines

  1. Listing 2 - member function definitions for a generic queue using void * 
  2. elements
  3.  
  4. //
  5. // genq3.cpp - generic queue using void *
  6. // elements and an iteration function
  7. //
  8.  
  9. #include "genq3.h"
  10.  
  11. void genq::append(void *e)
  12.     {
  13.     cell *p = new cell(e, 0);
  14.     if (first == 0)
  15.         first = p;
  16.     else
  17.         last->next = p;
  18.     last = p;
  19.     }
  20.  
  21. void genq::clear()
  22.     {
  23.     cell *p;
  24.     while (first != 0)
  25.         {
  26.         p = first;
  27.         first = first->next;
  28.         delete p->element;
  29.         delete p;
  30.         }
  31.     last = 0;
  32.     }
  33.  
  34. void genq::apply(void f(void *))
  35.     {
  36.     cell *p;
  37.     for (p = first; p != 0; p = p->next)
  38.         f(p->element);
  39.     }
  40.  
  41. int genq::remove(void *&e)
  42.     {
  43.     if (first == 0)
  44.         return 0;
  45.     cell *p = first;
  46.     if ((first = first->next) == 0)
  47.         last = 0;
  48.     e = p->element;
  49.     delete p;
  50.     return 1;
  51.     }
  52.